package com.b1.taskmanagerclient.api;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.UnsupportedEncodingException;

/**
 * Класс работы с фалом конфигураций
 * статическими методами обеспечивает чтение и запись в файл
 */
public class ConfigFile 
{
    private static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(ConfigFile.class);
    /**
     * методполучения данных о имени хоста и порта сервера
     * возвращает null в том случае если файл конф. пуст
     * или содержит не верное количество параметров
     * @param name
     * @return String[0] - hostName
     * @return String[1] - port
     */
    public static String [] getParams(String name)
    {
        try 
        {
            java.io.File file = new java.io.File(name);
            final int length = (int) file.length();
            if(length==0) return null;
            char[] cbuf = new char[length];
            java.io.InputStreamReader isr = new java.io.InputStreamReader(new java.io.FileInputStream(file), "CP1251");
            String s = null;
            if (length != 0) 
            {
                int read = isr.read(cbuf);
                s = new String(cbuf, 0, read);
            }
            isr.close();
            if ((s.split(" ").length<2) |(s.split(" ").length>2)) return null;
            return s.split(" ");
        } 
        catch (UnsupportedEncodingException ex) {
            log.error(ConfigFile.class.getName()+"\nError read conf file ",ex);
            return null;
        }
        catch (FileNotFoundException ex) {
            log.error(ConfigFile.class.getName()+"\nError read conf file ",ex);
            return null;
        }
        catch (IOException ex)
        {
            log.error(ConfigFile.class.getName()+"\nError read conf file ",ex);
            return null;
        }
    }
    
    /**
     * методполучения данных о имени хоста и порта сервера
     * возвращает null в том случае если файл конф. пуст
     * или содержит не верное количество параметров
     * @return String[0] - hostName
     * @return String[1] - port
     */
    public static String [] getParams()
    {
        return getParams("conf.txt");
    }
    /**
     * метод записи параметров в конф файл
     * @param hostName
     * @param port 
     */
    public static void setParams(String hostName,int port)
    {
        try 
        {
            java.io.FileWriter fw = new java.io.FileWriter("conf.txt");
            fw.write(hostName + " " + port);
            fw.close();
        }
        catch (IOException ex)
        {
            log.error(ConfigFile.class.getName()+"\nError write conf file ",ex);
        }
        
    }
    
}
